from django.contrib import admin

# Register your models here.

from .models import *


# 定义内嵌类: 以块的形式
# class HeroInfoInline(admin.StackedInline):
# 定义内嵌类: 以表格的形式
class HeroInfoInline(admin.TabularInline):
    model = HeroInfo  # 要编辑的模型类
    extra = 2  # 额外数量(空白框),附加编辑的数量


# 定义管理类样式
@admin.register(BookInfo)  # 等价于 admin.site.register(BookInfo, BookInfoAdmin)
class BookInfoAdmin(admin.ModelAdmin):
    # 重写属性

    # 列表页属性
    list_per_page = 10  # 在分页时,每页最多显示的数据量
    actions_on_Top = True  # 动作栏(操作选项)在顶部显示
    actions_on_bottom = True  # 动作栏在底部显示
    list_display = ["id", "btitle", "pub_date", "book_heros_counts"]  # 设置列表中的列(字段/方法,这里的方法需返回一个字符串才行)
    list_filter = ["bread"]  # 快速查询(过滤)
    search_fields = ["btitle"]  # 查询栏

    """
    fields: 实现字段的简单布局中的"添加"和"更改","更改"网页形式的简单改变只显示可字段的一个子集
    fieldsets: 实现字段的复杂布局中的"添加"和"更改",是一个二元元组,每一个元组代表一个管理表单,格式为(name,field_options),name是标题,field_options是一个关于field_options的字典信息,一个字段列表包含在里面
    如果fields和fieldsets选项都不存在,Django将会默认显示每一个不是AutoField并且editable=True的字段,在单一的字段集,和在模块中定义的字段有相同的顺序
    """

    # 图书编辑页属性
    # fields = ["btitle", "bpub_date", "bcomment"]  # 设置图书编辑页面的属性
    # fields和fieldsets不同时出现
    # fieldsets = (    # 分组显示
    #     # (组名称, {"field": [属性,...]})
    #     ("基本", {"fields": ["btitle","bpub_date"]}),
    #     ("可选", {
    #         "fields": ["bread", "bcomment"],
    #         "classes": ("collapse",)  # 是否折叠显示
    #     }),
    # )
    # 内嵌,前提是内嵌模型和当前模型有关联(主表嵌子表,但是子表嵌主表好像不行)
    inlines = [HeroInfoInline]

    # 站点信息设置

    # 上传图片,不晓得咋实现的,只是在settings.py中添加MEDIA_ROOT和在模型类中添加image字段

    pass

# 注册模型类,同时加入管理类样式,另一种注册模型类的方式是给类添加装饰器@admin.register(BookInfo)
# admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo)

admin.site.site_header = "傻×"  # 网站页头
admin.site.site_title = "大傻"  # 页面标题
admin.site.index_title = "傻缺"  # 后台首页标语


"""
创建管理员的命令如下:
python manage.py createsuperuser

账号:python
邮箱1412400593@qq.com

修改密码
python manage.py changepassword 用户名

"""
